// 输入一棵二叉树的根节点，请设计算法返回该二叉树的深度。

var maxDepth: (root: TreeNode) => number = function (root) {
    // 递归出口：说明已越过叶节点，因此返回深度 0
    if (!root) {
        return 0;
    }
    // 关键：一颗二叉树的深度等于左子树的深度与右子树的深度中的最大值 +1
    return Math.max(maxDepth(root.left as TreeNode), maxDepth(root.right as TreeNode)) + 1;
};

        // 这道题的考点很明显就是深度优先递归遍历
        // 关键的解题点在于思考此树的深度和其左（右）子树的深度之间的关系。
        // 显然，一颗二叉树的深度等于左子树的深度与右子树的深度中的最大值 +1。
        // 递归的终止条件当就是root为空，说明已越过叶节点，因此返回深度 0。
        // 着重可以看一下递归的设计，非常妙。 